#!/bin/bash
. ./var
System_and_Access_log_analysis_summary(){

LOG_FILE="/usr/local/nginx/logs/access.log"
WEB_PORT="80"
MYSQL_PORT="3306"

#查看tcp连接状态
netstat -tan |awk '{print $6}'sort | uniq -c | sort -rn
echoGreen "以上是tcp连接状态"

#查找80端口请求数最高的前20个IP
netstat -anlp|grep ${WEB_PORT} | grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
echo "---------------------------------------"
netstat -ntu | grep :${WEB_PORT} | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
echoYellow "以上是80端口请求数最高的前20个IP"

#查找3306端口请求数最高的前20个IP
netstat -anlp|grep ${MYSQL_PORT} | grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
echoGreen "以上3306端口请求数最高的前20个IP"

#找出当前系统内存使用量较高的进程,输出的第4列就是内存的耗用百分比。最后一列就是相对应的进程
#ps -aux | sort -rnk 4 | head -20
ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20
echoYellow "以上是当前系统内存使用量较高的20"

#找出当前系统CPU使用量较高的进程
ps -aux | sort -rnk 3 | head -20
echoGreen "以上是当前系统CPU使用量较高的进程"

#查看php_cgi进程数，如果接近预设值，说明不够用，需要增加：
netstat -anpo | grep "php-cgi" | wc -l
echoYellow "以上php_cgi进程数，如果接近预设值，说明不够用，需要增加"



#列出当天访问次数最多的IP
# cut -d- -f 1 access.log |uniq -c |sort -rn |head -20
awk '{print $1}' ${LOG_FILE} | uniq -c | sort -rn | head -20
echoGreen "以上是截止此时访问次数最多的IP"
#查看当天有多少个IP访问
awk '{print $1}' ${LOG_FILE} | sort | uniq | wc -l

echoYellow "以上是截止此时有多少个IP访问"

#查看某一个页面总计被访问的次数
grep "index.html" ${LOG_FILE} | wc -l
echoGreen "以上index.html页面总计被访问的次数"

#查看每一个IP访问了多少个页面
awk '{++s[$1]} END {for (a in s) print a,s[a]}' $LOG_FILE
echoYellow "以上是每一个IP访问了多少个页面"

#将每个IP访问的页面数进行从小到大排序
awk '{++s[$1]} END {for (a in s) print s[a],a}' $LOG_FILE | sort -n
echoGreen "以上是每个IP访问的页面数进行从小到大排序"


#查看某一个IP访问了哪些页面
#grep "^127.0.0.1" $LOG_FILE | awk '{print $1,$7}'
#echoYellow "以上是192.168.1.2访问了哪些页面"

#去掉搜索引擎统计当天的页面
#awk '{print $12,$1}' $LOG_FLIE |grep ^"Mozilla" | awk 'print $2' | sort | uniq | wc -l
#echoGreen "去掉搜索引擎统计当天的页面"

#查看10/Apr/2020:11:03:33这一个小时内有多少IP访问
awk '{print $4,$1}' ${LOG_FILE} | grep "10/Apr/2020:11:03:33"  | awk '{print $2}' | sort | uniq | wc -l
echoYellow "以上是10/Apr/2020:11:03:33这一个小时内有多少IP访问"

#列出所有IP访问情况
awk '{print $1}' $LOG_FILE | sort -n | uniq
echoGreen "以上是所有IP访问情况"

#查看访问最频繁的前100个IP
awk '{print $1}' $LOG_FILE | sort -n | uniq -c | sort -rn | head -n 100
echoYellow "以上是访问最频繁的前100个IP"


#查询某个IP的详细访问情况，按访问频率排序
grep '127.0.0.1' ${LOG_FILE} | awk '{print $7}' | sort | uniq -c | sort | uniq -c | sort -rn | head -n 100
echoGreen "以上是某个IP的详细访问情况，按访问频率排序"


#查看访问100次以上的IP
awk '{print $1}' ${LOG_FILE} | sort -n | uniq -c | awk '{if($1 >100) print $0}' | sort -rn
echoYellow "查看访问100次以上的IP"


#页面统计访问：查看访问频率的前100个页面
awk '{print $7}' ${LOG_FILE} | sort | uniq -c | sort -rn | head -n 100
echoGreen "以上是页面统计访问：查看访问频率的前100个页面"


#页面统计访问：查看访问频率的前100个页面(排除php|py)
grep -E -v ".php|.py" ${LOG_FILE} | awk '{print $7}' | sort | uniq -c | sort -rn | head -n 100
echoGreen "以上是页面统计访问：查看访问频率的前100个页面（排除php|py）"

#页面访问统计：查看页面访问次数超过100次的页面
cut -d ' ' -f 7 ${LOG_FILE} | sort | uniq -c | awk '{if ($1 > 100) print$0}'
echoYellow "以上是页面访问统计：查看页面访问次数超过100次的页面"


#页面访问统计：查看最近1000条记录中，访问量最高的页面
tail -1000 ${LOG_FILE} | awk '{print $7}' | sort | uniq -c | sort -nr
echoGreen "以上是页面访问统计：查看最近1000条记录中，访问量最高的页面"


#每秒请求量统计：统计每秒的请求数前100的时间点（精确到秒）
awk '{print $4}' ${LOG_FILE} | cut -c14-21 | sort | uniq -c | sort -nr | head -n 100
echoYellow "以上是每秒请求量统计：统计每秒的请求数前100的时间点（精确到秒）"

#每分钟请求量统计：统计每分钟的请求数，top100的时间点（精确到分钟）
awk '{print $4}' ${LOG_FILE} | cut -c14-18 | sort | uniq -c | sort -nr | head -n 100
echoGreen "以上是每秒请求量统计：统计每秒的请求数前100的时间点（精确到秒）"

#每小时请求量统计：统计每小时的请求数，top100的时间点（精确到小时）
awk '{print $4}' ${LOG_FILE} | cut -c14-15 | sort | uniq -c | sort -nr | head -n 100
echoGreen "以上是每小时请求量统计：统计每小时的请求数前100的时间点（精确到秒）"


}

#System_and_Access_log_analysis_summary
